/***********************************************************************
 * <copyright file="DaoFactory.cs" company="BUCA JSC">
 * -->    Copyright (C) statement. All right reserved
 * </copyright>
 * 
 * Created:   Tuanhm
 * Email:    Tuanhm@humg@gmail.com
 * Website:
 * Create Date: Thursday, March 27, 2014
 * Usage: 
 * 
 * RevisionHistory: 
 * Date         Author               Description 
 * 
 * ************************************************************************/

using DataObjects.StandartInterfaces;
using DataObjects.StandartInterfaces.Dictionary;
using DataObjects.StandartInterfaces.Report;
using DataObjects.StandartInterfaces.Voucher;

namespace DataObjects
{
    /// <summary>
    /// Abstract factory interface. Creates data access objects.
    /// </summary>
    /// <remarks>
    /// GoF Design Pattern: Factory.
    /// </remarks>
    public interface IDaoFactory
    {
        #region Security
        
        #endregion

        #region Dictionary

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IVoucherTypeDao VoucherTypeDao { get; } 

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IRefTypeDao RefTypeDao { get; } 

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IEmployTest EmployTest { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IAccountDao AccountDao { get; }  

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
     
        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IFixedAssetDao FixedAssetDao { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IFixedAssetCategoryDao FixedAssetCategoryDao { get; }
        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IUnitDao UnitDao { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IStockDao StockDao { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IVendorDao VendorDao { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IInventoryItemDao InventoryItemDao { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IAutoBusinessDao AutoBusinessDao { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IAutoNumberDao AutoNumberDao { get; } 

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        ICustomerDao CustomerDao { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IDbOptionDao DbOptionDao { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IDepartmentDao DepartmentDao { get; }

      

        #endregion      

        #region  Voucher

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        ITaxTransDao TaxTransDao { get; }  

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IJournalEntryAccountDao JournalEntryAccountDao { get; } 

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IAccountBalanceDao AccountBalanceDao { get; } 


        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IItemTransactionDao ItemTransactionDao { get; } 

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IItemTransactionDetailDao ItemTransactionDetailDao { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IOpeningAccountEntryDao OpeningAccountEntryDao { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IOpeningAccountEntryDetailDao OpeningAccountEntryDetailDao { get; }    
        #endregion
        
        #region Report
        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IReportListDao ReportListDao { get; }

        /// <summary>
        /// Gets the budget source.
        /// </summary>
        /// <value>
        /// The budget source.
        /// </value>
        IReportGroupDao ReportGroupDao { get; }  
        #endregion

 
    }
}
